home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / cineman.ru.ifs < prev    next >
Encoding:
Text File  |  2004-03-20  |  6.2 KB  |  209 lines

  1. // GETINFO SCRIPTING
  2. // www.cineman.ru - Russian films
  3.  
  4. (***************************************************
  5.  *  Movie importation script for:                  *
  6.  *     www.cineman.ru (RU)                         *
  7.  *                                                 *
  8.  *  (c) 2003 Dmitry501                             *
  9.  *  Special for Alexsandr                          *
  10.  *                                                 *
  11.  *  For use with Ant Movie Catalog 3.4.0           *
  12.  *  www.antp.be/software/moviecatalog              *
  13.  *                                                 *
  14.  *  This program is free software; you can         *
  15.  *  redistribute it and/or modify it under the     *
  16.  *  terms of the GNU General Public License as     *
  17.  *  published by the Free Software Foundation;     *
  18.  *  either version 2 of the License, or (at your   *
  19.  *  option) any later version.                     *
  20.  ***************************************************)
  21.  
  22. program cineman_divx;
  23. const
  24.   BaseAddress = 'http://www.cineman.ru/';
  25. var
  26.   MovieName: string;
  27. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  28. var
  29.   i: Integer;
  30. begin
  31.   result := -1;
  32.   if StartAt < 0 then
  33.     StartAt := 0;
  34.   for i := StartAt to List.Count-1 do
  35.     if Pos(Pattern, List.GetString(i)) <> 0 then
  36.     begin
  37.       result := i;
  38.       Break;
  39.     end;
  40. end;
  41. function HTMLRemove(Value: String): String;
  42. begin
  43.   HTMLDecode(Value);
  44.   HTMLRemoveTags(Value);
  45.   Value := Trim(Value);
  46.   result := Value;
  47. end;
  48. procedure AnalyzeFilmPage(Address: String);
  49. var
  50.   Page : TStringList;
  51.   Line, Value : string;
  52.   LineNr, BeginPos, EndPos: Integer;
  53. begin
  54.   Page := TStringList.Create;
  55.   Page.Text := GetPage(Address);
  56.   // URL
  57.   SetField(fieldURL, Address);
  58.   // Year
  59.   LineNr := FindLine('├εΣ', Page, 0);
  60.   if LineNr > -1 then begin
  61.     Value := Page.GetString(LineNr+1);
  62.     Value := HTMLRemove(Value);
  63.     SetField(fieldYear, Value);
  64.   end;
  65.   // Title
  66.   LineNr := FindLine('<big><strong>', Page, 0);
  67.   if LineNr > -1 then begin
  68.     Value := Page.GetString(LineNr+2);
  69.     Value := Value + Page.GetString(LineNr+3);
  70.     Value := HTMLRemove(Value);
  71.     LineNr := pos(' ', Value);
  72.     SetField(fieldTranslatedTitle, Left(Value,LineNr-1));
  73.     Value := copy(Value, LineNr+5,Length(Value));
  74.     Value := StringReplace(Value, '(', '');
  75.     Value := StringReplace(Value, ')', '');
  76.     SetField(fieldOriginalTitle, Value);
  77.   end;
  78.   // Director
  79.   LineNr := FindLine('╨σµΦ±±╕≡:', Page, 0);
  80.   if LineNr > -1 then
  81.   begin
  82.     Value := Page.GetString(LineNr+1);
  83.     Value := HTMLRemove(Value);
  84.     SetField(fieldDirector, Value);
  85.   end;
  86.   // Actors
  87.   LineNr := FindLine('┬ ≡εδ ⌡:', Page, 0);
  88.   if LineNr > -1 then
  89.   begin
  90.     Value := Page.GetString(LineNr+1);
  91.     Value := HTMLRemove(Value);
  92.     SetField(fieldActors, Value);
  93.   end;
  94.   //Country
  95.   LineNr := FindLine('╤≥≡αφα:', Page, 0);
  96.   if LineNr > -1 then
  97.   begin
  98.     Value := Page.GetString(LineNr+1);
  99.     Value := HTMLRemove(Value);
  100.     SetField(fieldCountry, Value);
  101.   end;
  102.   //Category
  103.   LineNr := FindLine('╞αφ≡:', Page, 0);
  104.   if LineNr > -1 then
  105.   begin
  106.     Value := Page.GetString(LineNr+1);
  107.     Value := HTMLRemove(Value);
  108.     SetField(fieldCategory, Value);
  109.   end;
  110.   //Description
  111.   LineNr := FindLine('╩ε∞∞σφ≥α≡ΦΦ:', Page, 0);
  112.   if LineNr > -1 then
  113.   begin
  114.     Value := Page.GetString(LineNr+1);
  115.     Value := HTMLRemove(Value);
  116.     SetField(fieldDescription, Value);
  117.   end;
  118.   // Discs
  119.   LineNr := FindLine('╩εδΦ≈σ±≥Γε ΣΦ±ΩεΓ:', Page, 0);
  120.   if LineNr > -1 then
  121.   begin
  122.     Value := Page.GetString(LineNr+1);
  123.     Value := HTMLRemove(Value);
  124.     SetField(fieldDisks, Value);
  125.   end;
  126.   // Length
  127.   LineNr := FindLine('┬≡σ∞ :', Page, 0);
  128.   if LineNr > -1 then
  129.   begin
  130.     Value := Page.GetString(LineNr+1);
  131.     Value := HTMLRemove(Value);
  132.     SetField(fieldLength, Value);
  133.   end;
  134.   // Video
  135.   LineNr := FindLine('╘ε≡∞α≥ ΓΦΣσε:', Page, 0);
  136.   if LineNr > -1 then
  137.   begin
  138.     Value := Page.GetString(LineNr+1);
  139.     Value := HTMLRemove(Value);
  140.     SetField(fieldVideoFormat, Value);
  141.    end;
  142.   // Audio
  143.   LineNr := FindLine('╘ε≡∞α≥ τΓ≤Ωα:', Page, 0);
  144.   if LineNr > -1 then
  145.   begin
  146.     Value := Page.GetString(LineNr+1);
  147.     Value := HTMLRemove(Value);
  148.     SetField(fieldAudioFormat, Value);
  149.    end;
  150.   // Get Picture
  151.   LineNr := FindLine('<img src=', Page, 0);
  152.   if LineNr > -1 then
  153.   begin
  154.     Line := Page.GetString(LineNr);
  155.     BeginPos := pos('<img src=', Line)+11;
  156.     Delete(Line, 1, BeginPos);
  157.     EndPos := pos(' ', Line);
  158.     Value := BaseAddress + copy(Line, 1, EndPos - 1);
  159.     GetPicture(Value, False); // False = do not store picture externally ; store it in the catalog file
  160.   end;
  161. end;
  162. procedure AnalyzePage(Address: string);
  163. var
  164.   Page: TStringList;
  165.   LineNr, StartPos, EndPos: Integer;
  166.   Line: string;
  167.   MovieAddress, findMovieName : string;
  168. begin
  169.   PickTreeClear;
  170.   Page := TStringList.Create;
  171.   Page.Text := GetPage(Address);
  172.   if (pos('φαΘΣσφε ∩ετΦ÷ΦΘ :', Page.Text)>0) then
  173.   begin
  174.     PickTreeAdd('═αΘΣσφε φα cineman.ru', '');
  175.     LineNr :=0;
  176.     repeat
  177.       LineNr := FindLine('<td width=29%  height= 10><font size=2 color=#1B5188><strong>', Page, LineNr);
  178.       If LineNr >0 Then Begin
  179.         Line := Page.GetString(LineNr);
  180.         StartPos := pos('<a href=', Line) + 8;
  181.         EndPos := pos(' target=_blank>',Line);
  182.         MovieAddress := 'cgi/' + copy(Line, StartPos, EndPos - StartPos);
  183.         StartPos := EndPos + 15;
  184.         EndPos := pos('</a><strong>',Line);
  185.         FindMovieName := copy(Line, StartPos, EndPos - StartPos);
  186.         HTMLRemoveTags(FindMovieName);
  187.         HTMLDecode(FindMovieName);
  188.         PickTreeAdd(FindMovieName, BaseAddress + MovieAddress);
  189.         LineNr := LineNr + 1;
  190.       End;
  191.     until (LineNr<1);
  192.     if PickTreeExec(Address) then begin
  193.       AnalyzeFilmPage(Address);
  194.     end;
  195.     Page.Free;
  196.   end;
  197.   DisplayResults;
  198. end;
  199. begin
  200.   PickListClear;
  201.   MovieName := GetField(fieldOriginalTitle);
  202.   if Input('Import from cineman.ru', 'Enter the title of the movie:', MovieName) then begin
  203.     MovieName:=AnsiLowerCase(MovieName);
  204.     MovieName:=AnsiUpFirstLetter(MovieName);
  205.     AnalyzePage('http://www.cineman.ru/cgi/search.pl?WORD='+UrlEncode(MovieName)+'&TYPE=name');
  206.   end;
  207. end.
  208.  
  209.